/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Nuevo_comprobante.java
 *
 * Created on 15/06/2009, 02:16:04 AM
 */
package Compras;

import General.Detalle_producto_compra;
import javax.swing.JLabel;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import Control.Conexion;
import Control.Tiempo;
import Compras.Comprobante_compra_productos;
import javax.swing.JOptionPane;

import java.awt.Color;
import Control.RenderTabla;
import Control.MiModeloCompraBoleta;
import Control.RenderEncabezado;
import org.apache.commons.beanutils.Converter;

/**
 *
 * @author GAMA
 */
public class Nuevo_comprobante extends javax.swing.JPanel {

    Detalle_producto_compra detalleProducto = new Detalle_producto_compra(this);
    //DefaultTableModel model= new DefaultTableModel();
    private MiModeloCompraBoleta model;
    String[] fecha_sistema;
    Comprobante_compra_productos frmMantenimientoCompras;
    int bandera;
    private String codigo;
    private String fecha;
    //formato de Date aaaa-mm-dd convertido a String
    String proveedor;
    boolean porhabilitar = false;
    private float igv;
    private float total;
    private float subtotal;

    public float getSubtotal() {
        return subtotal;
    }

    public void setSubtotal(float subtotal) {
        this.subtotal = subtotal;

        this.subtotal = Float.parseFloat("" + redondear(this.subtotal, 2));
        lblSubtotal.setText("" + this.subtotal);
    }
    DefaultTableModel model_preliminar; //para mantener que esquema hubo en la tabla de detalles antes de su modificacion
    Integer codigo_usuario_auditoria = 0;

    /** Creates new form Nuevo_comprobante */
    public Nuevo_comprobante(Comprobante_compra_productos frmMantenimientoCompras, int bandera, Integer codigo_usuario_auditoria) {
        initComponents();
        model = new MiModeloCompraBoleta();
        this.codigo_usuario_auditoria = codigo_usuario_auditoria;
        cargar_todos_proveedores();
        cargar_IGV();
        cargar_fecha_sistema();
        model.addColumn("Guía");
        model.addColumn("Cantidad");
        model.addColumn("Descripción");
        model.addColumn("Precio Unitario");
        model.addColumn("Precio Total");

        this.bandera = bandera;
        this.frmMantenimientoCompras = frmMantenimientoCompras;


        //***/

        tablafaccom.setDefaultRenderer(Object.class, new RenderTabla(1));
        tablafaccom.setModel(model);
        cambiar_color_encabezado_tabla();
        jTabbedPane1.requestFocus();
        jPanel2.requestFocus();
        numero.requestFocus();
    }

    public void cambiar_color_encabezado_tabla() {
        tablafaccom.setGridColor(new Color(14, 14, 162));//colores de celdas
        tablafaccom.getColumnModel().getColumn(0).setHeaderRenderer(new RenderEncabezado(new Color(210, 222, 233), new Color(14, 14, 162)));
        tablafaccom.getColumnModel().getColumn(1).setHeaderRenderer(new RenderEncabezado(new Color(210, 222, 233), new Color(14, 14, 162)));
        tablafaccom.getColumnModel().getColumn(2).setHeaderRenderer(new RenderEncabezado(new Color(210, 222, 233), new Color(14, 14, 162)));
        tablafaccom.getColumnModel().getColumn(3).setHeaderRenderer(new RenderEncabezado(new Color(210, 222, 233), new Color(14, 14, 162)));
        tablafaccom.getColumnModel().getColumn(4).setHeaderRenderer(new RenderEncabezado(new Color(210, 222, 233), new Color(14, 14, 162)));
    }

    public void cargar_fecha_sistema() {
        Tiempo t = new Tiempo();
        fecha_sistema = t.obtener_fecha_sistema();
        txtfecha.setText(fecha_sistema[0] + "/" + fecha_sistema[1] + "/" + fecha_sistema[2]);

    }

    public void cargar_todos_proveedores() {
        Conexion c = new Conexion();
        Vector<String> vproveedores = c.cargar_proveedores();
        this.cmbproveedor.removeAllItems();
        for (int i = 0; i < vproveedores.size(); i++) {
            this.cmbproveedor.addItem(vproveedores.get(i));
        }
    }

    public void cargar_IGV() {
        Conexion c = new Conexion();
        Vector<String> vproveedores = c.cargar_IGV();
        this.cmbIGV.removeAllItems();
        for (int i = 0; i < vproveedores.size(); i++) {
            this.cmbIGV.addItem(vproveedores.get(i));
        }
    }

    public Double redondear(float numero, int decimales) {
        return Math.round(numero * Math.pow(10, decimales)) / Math.pow(10, decimales);
    }

    public void cargar_datos_detalle_producto(String guia, int cantidad, String descripcion, float precio_unitario) {
        Vector fil = new Vector();
        fil.add(guia);
        fil.add(cantidad);
        fil.add(descripcion);
        fil.add(precio_unitario);
        fil.add("" + cantidad * precio_unitario);
        model.addRow(fil);

        tablafaccom.setModel(model);
        //render
        float subtotal = 0;
        for (int i = 0; i < model.getRowCount(); i++) {
            int cantidad_model = Integer.parseInt(model.getValueAt(i, 1).toString());
            subtotal = cantidad_model * Float.parseFloat(model.getValueAt(i, 3).toString()) + subtotal;
        }
        float por_igv = Float.parseFloat(String.valueOf(subtotal * (Float.parseFloat(this.cmbIGV.getSelectedItem().toString())/100)));
        int numeroq = (int) (por_igv * 100);
        por_igv = Float.parseFloat("" + numeroq / 100.0);

        float total = por_igv + subtotal;

        por_igv = Float.parseFloat("" + redondear(por_igv, 2));
        total = Float.parseFloat("" + redondear(total, 2));

        lblSubtotal.setText("" + subtotal);
        lblIGV.setText("" + por_igv);

        lblTotal.setText("" + total);

    }

    public void registrar_comprobante_compra(String codigo, String vfecha, float igv, float total, int vproveedor, String vIGV) {

        Conexion c = new Conexion();

        c.registrar_comprobante_compra_productos(codigo_usuario_auditoria, codigo, vfecha, igv, total, vproveedor, model, vIGV);

        JOptionPane.showMessageDialog(this, "Se ha registrado con éxito", "Información", JOptionPane.INFORMATION_MESSAGE);
        this.setVisible(false);
        frmMantenimientoCompras.getPanelContenedorOperario().removeAll();
        frmMantenimientoCompras.inicializar_tabla_compras();
        frmMantenimientoCompras.getPanelContenedorOperario().add(frmMantenimientoCompras);
        frmMantenimientoCompras.setSize(765, 460);
        frmMantenimientoCompras.setVisible(false);
        frmMantenimientoCompras.setVisible(true);
    }

    public void modificar_comprobante_compra(String codigo, float igv, float total, int vproveedor) {
        Conexion c = new Conexion();

        DefaultTableModel modelnuevo = c.cargar_detalle_comprobante(codigo);
        c.modificar_comprobante_compra_productos(codigo_usuario_auditoria, codigo, igv, total, vproveedor, model, modelnuevo);

        JOptionPane.showMessageDialog(this, "Se ha modificado con éxito", "Información", JOptionPane.INFORMATION_MESSAGE);
        this.setVisible(false);
        frmMantenimientoCompras.getPanelContenedorOperario().removeAll();
        frmMantenimientoCompras.inicializar_tabla_compras();
        frmMantenimientoCompras.getPanelContenedorOperario().add(frmMantenimientoCompras);
        frmMantenimientoCompras.setSize(765, 460);
        frmMantenimientoCompras.setVisible(false);
        frmMantenimientoCompras.setVisible(true);



    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel2 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tablafaccom = new javax.swing.JTable();
        jLabel11 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        lblTotal = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        btnAgregar = new javax.swing.JButton();
        btnEliminar = new javax.swing.JButton();
        lblIGV = new javax.swing.JLabel();
        lblSubtotal = new javax.swing.JLabel();
        jLabel16 = new javax.swing.JLabel();
        cmbIGV = new javax.swing.JComboBox();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        numero = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        txtfecha = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        cmbproveedor = new javax.swing.JComboBox();
        btnguardar = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();

        jPanel2.setBackground(new java.awt.Color(255, 255, 255));
        jPanel2.setLayout(null);

        jPanel4.setBackground(new java.awt.Color(255, 255, 255));
        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(210, 222, 233)), "Datos Específicos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11), new java.awt.Color(14, 14, 162))); // NOI18N
        jPanel4.setLayout(null);

        jScrollPane1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jScrollPane1MousePressed(evt);
            }
        });
        jScrollPane1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jScrollPane1KeyPressed(evt);
            }
        });

        tablafaccom.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Guia", "Cantidad", "Descripcion", "Precio unitario", "Precio total"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        tablafaccom.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                tablafaccomMousePressed(evt);
            }
        });
        tablafaccom.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                tablafaccomFocusGained(evt);
            }
        });
        tablafaccom.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tablafaccomKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(tablafaccom);

        jPanel4.add(jScrollPane1);
        jScrollPane1.setBounds(20, 60, 570, 120);

        jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel11.setText("SUB-TOTAL S/.");
        jPanel4.add(jLabel11);
        jLabel11.setBounds(390, 190, 100, 20);

        jLabel13.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel13.setText("TOTAL S/.");
        jPanel4.add(jLabel13);
        jLabel13.setBounds(420, 240, 70, 20);

        lblTotal.setFont(new java.awt.Font("Tahoma", 0, 12));
        lblTotal.setText("0.00");
        lblTotal.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jPanel4.add(lblTotal);
        lblTotal.setBounds(500, 240, 90, 17);

        jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabel15.setText(") S/.");
        jPanel4.add(jLabel15);
        jLabel15.setBounds(450, 210, 50, 20);

        btnAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Agregar1.gif"))); // NOI18N
        btnAgregar.setMnemonic('r');
        btnAgregar.setText("Agregar");
        btnAgregar.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        btnAgregar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarActionPerformed(evt);
            }
        });
        jPanel4.add(btnAgregar);
        btnAgregar.setBounds(21, 30, 100, 25);

        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Quitar1.gif"))); // NOI18N
        btnEliminar.setMnemonic('i');
        btnEliminar.setText("Quitar");
        btnEliminar.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        btnEliminar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        jPanel4.add(btnEliminar);
        btnEliminar.setBounds(140, 30, 90, 25);

        lblIGV.setFont(new java.awt.Font("Tahoma", 0, 12));
        lblIGV.setText("0.00");
        lblIGV.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jPanel4.add(lblIGV);
        lblIGV.setBounds(500, 215, 90, 20);

        lblSubtotal.setFont(new java.awt.Font("Tahoma", 0, 12));
        lblSubtotal.setText("0.00");
        lblSubtotal.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jPanel4.add(lblSubtotal);
        lblSubtotal.setBounds(500, 190, 90, 20);

        jLabel16.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabel16.setText("I.G.V.(");
        jPanel4.add(jLabel16);
        jLabel16.setBounds(350, 210, 40, 20);

        cmbIGV.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cmbIGV.setName("cmbIGV"); // NOI18N
        jPanel4.add(cmbIGV);
        cmbIGV.setBounds(390, 210, 56, 20);

        jPanel2.add(jPanel4);
        jPanel4.setBounds(30, 100, 610, 270);

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(210, 222, 233)), "Datos Generales", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11), new java.awt.Color(14, 14, 162))); // NOI18N
        jPanel1.setLayout(null);

        jLabel1.setText("Nº Factura:");
        jPanel1.add(jLabel1);
        jLabel1.setBounds(70, 20, 80, 20);

        numero.addCaretListener(new javax.swing.event.CaretListener() {
            public void caretUpdate(javax.swing.event.CaretEvent evt) {
                numeroCaretUpdate(evt);
            }
        });
        jPanel1.add(numero);
        numero.setBounds(150, 20, 70, 20);

        jLabel2.setText("Fecha: ");
        jPanel1.add(jLabel2);
        jLabel2.setBounds(410, 20, 60, 14);

        txtfecha.setEditable(false);
        jPanel1.add(txtfecha);
        txtfecha.setBounds(450, 20, 90, 20);

        jLabel3.setText("Proveedor:");
        jPanel1.add(jLabel3);
        jLabel3.setBounds(70, 50, 80, 14);

        jPanel1.add(cmbproveedor);
        cmbproveedor.setBounds(150, 50, 300, 20);

        jPanel2.add(jPanel1);
        jPanel1.setBounds(30, 10, 610, 80);

        btnguardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Guardar16.gif"))); // NOI18N
        btnguardar.setMnemonic('g');
        btnguardar.setText("Guardar");
        btnguardar.setEnabled(false);
        btnguardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnguardarActionPerformed(evt);
            }
        });
        jPanel2.add(btnguardar);
        btnguardar.setBounds(220, 375, 100, 25);

        jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Cancelar16.gif"))); // NOI18N
        jButton4.setMnemonic('c');
        jButton4.setText("Cancelar");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        jPanel2.add(jButton4);
        jButton4.setBounds(400, 375, 95, 25);

        jTabbedPane1.addTab("Nuevo comprobante compra", jPanel2);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(45, 45, 45)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 675, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(41, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents

    private void tablafaccomMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablafaccomMousePressed
        // TODO add your handling code here:
    }//GEN-LAST:event_tablafaccomMousePressed

    private void tablafaccomKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tablafaccomKeyPressed
        // TODO add your handling code here:
    }//GEN-LAST:event_tablafaccomKeyPressed

    private void jScrollPane1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jScrollPane1MousePressed
        // TODO add your handling code here:
}//GEN-LAST:event_jScrollPane1MousePressed

    private void jScrollPane1KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jScrollPane1KeyPressed
        // TODO add your handling code here:
}//GEN-LAST:event_jScrollPane1KeyPressed

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        // TODO add your handling code here:



        if (tablafaccom.getSelectedRow() != -1) {
            int fila = tablafaccom.getSelectedRow();
            detalleProducto.eliminar_compra_elemento_en_anterior(fila);
            model.removeRow(fila);

            float subtotal = 0;
            for (int i = 0; i < model.getRowCount(); i++) {
                int cantidad_model = Integer.parseInt(model.getValueAt(i, 1).toString());
                String vvv = model.getValueAt(i, 3).toString();
                float valor_fila = cantidad_model * Float.parseFloat(vvv);
                subtotal = valor_fila + subtotal;
            }
            float total = 0;

            float igv = Float.parseFloat(String.valueOf(subtotal * (Float.parseFloat(this.cmbIGV.getSelectedItem().toString())/100)));
            total = igv + subtotal;
            igv = Float.parseFloat("" + redondear(igv, 2));
            total = Float.parseFloat("" + redondear(total, 2));
            lblSubtotal.setText("" + subtotal);
            lblIGV.setText("" + igv);
            lblTotal.setText("" + total);

            if (model.getRowCount() == 0) {
                this.habilitarBoton(false);

            }
            this.tablafaccom.setModel(model);
        } else {
            if (tablafaccom.getRowCount() == 0) {
                JOptionPane.showMessageDialog(this, "No existen elementos en la tabla", "Información", JOptionPane.WARNING_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(this, "Debe seleccionar una fila", "Información", JOptionPane.WARNING_MESSAGE);
            }


        }
    }//GEN-LAST:event_btnEliminarActionPerformed

    private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarActionPerformed
        // TODO add your handling code here:
        if (bandera == 1) {
            Conexion c = new Conexion();
            Vector<String> aux;
            boolean permitido = true;

            if (this.escrito_campo_numero_comprobante()) {
                aux = c.retornar_codigos_comprobante_compra();
                for (int i = 0; i < aux.size(); i++) {
                    if (numero.getText().equals(aux.get(i))) {
                        JOptionPane.showMessageDialog(this, "El codigo de comprobante ingresado ya existe", "Información", JOptionPane.WARNING_MESSAGE);
                        permitido = false;
                    }
                }
                if (permitido) {
                    detalleProducto.setVisible(true);
                }
            } else {
                JOptionPane.showMessageDialog(this, "Ingrese el código de comprobante", "Información", JOptionPane.WARNING_MESSAGE);
            }
        } else {
            detalleProducto.setVisible(true);
        }
    }//GEN-LAST:event_btnAgregarActionPerformed

    private void btnguardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnguardarActionPerformed
        // TODO add your handling code here:
        String codigo = numero.getText();
        String vfecha = fecha_sistema[2] + "-" + fecha_sistema[1] + "-" + fecha_sistema[0];
        //consulta sql del  codigo de proveedor
        String vproveedor = cmbproveedor.getSelectedItem().toString();
        Conexion c = new Conexion();
        int codigo_proveedor = c.devolver_codigo_proveedor(vproveedor);


        float igv = Float.parseFloat(lblIGV.getText());
        float total = Float.parseFloat(lblTotal.getText());
        if (bandera == 1) {
            this.registrar_comprobante_compra(codigo, vfecha, igv, total, codigo_proveedor, this.cmbIGV.getSelectedItem().toString());
        } else {
            this.modificar_comprobante_compra(codigo, igv, total, codigo_proveedor);
        }


}//GEN-LAST:event_btnguardarActionPerformed

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        // TODO add your handling code here:
        this.setVisible(false);
        this.frmMantenimientoCompras.getPanelContenedorOperario().removeAll();
        this.frmMantenimientoCompras.setSize(761, 460);
        this.frmMantenimientoCompras.getPanelContenedorOperario().add(this.frmMantenimientoCompras);
        this.frmMantenimientoCompras.setVisible(false);
        this.frmMantenimientoCompras.setVisible(true);
    }//GEN-LAST:event_jButton4ActionPerformed

    private void tablafaccomFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tablafaccomFocusGained
        // TODO add your handling code here:
        modificar_total_igv();


    }//GEN-LAST:event_tablafaccomFocusGained

    private void numeroCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_numeroCaretUpdate
        // TODO add your handling code here:
        if (numero.getText().equals("")) {
            btnguardar.setEnabled(false);
        } else {
            if (model.getRowCount() > 0) {
                btnguardar.setEnabled(true);
            }
        }
    }//GEN-LAST:event_numeroCaretUpdate
    public void modificar_total_igv() {
        float subtotal = 0;
        boolean invalido = false;

        for (int i = 0; i < model.getRowCount(); i++) {
            int cantidad_model = 0;
            float valor_fila = 0, vvv = 0;
            try {
                cantidad_model = Integer.parseInt(model.getValueAt(i, 1).toString());
                if (cantidad_model < 0) {
                    model.setValueAt(detalleProducto.devolver_tabla_compra_anterior().get(i).get(1), i, 1);
                    JOptionPane.showMessageDialog(this, "La cantidad a adquirir no puede ser menor a cero", "Información", JOptionPane.WARNING_MESSAGE);

                } else {
                    if (cantidad_model == 0) {
                        model.setValueAt(detalleProducto.devolver_tabla_compra_anterior().get(i).get(1), i, 1);
                        JOptionPane.showMessageDialog(this, "La cantidad a adquirir no puede ser cero", "Información", JOptionPane.WARNING_MESSAGE);
                    }
                }
            } catch (Exception e) {

                model.setValueAt(detalleProducto.devolver_tabla_compra_anterior().get(i).get(1), i, 1);

                invalido = true;//formato de datos erroneo

            }
            try {
                vvv = Float.parseFloat(model.getValueAt(i, 3).toString());
                vvv = Float.parseFloat("" + this.redondear(vvv, 3));
                model.setValueAt(vvv, i, 3);
                if (vvv < 0) {
                    model.setValueAt(detalleProducto.devolver_tabla_compra_anterior().get(i).get(3), i, 3);
                    JOptionPane.showMessageDialog(this, "El costo unitario no puede ser menor que cero", "Información", JOptionPane.WARNING_MESSAGE);
                } else {
                    if (vvv == 0) {
                        model.setValueAt(detalleProducto.devolver_tabla_compra_anterior().get(i).get(3), i, 3);
                        JOptionPane.showMessageDialog(this, "El costo unitario no puede ser cero", "Información", JOptionPane.WARNING_MESSAGE);
                    }
                }

            } catch (Exception e) {
                model.setValueAt(detalleProducto.devolver_tabla_compra_anterior().get(i).get(3), i, 3);

                invalido = true;

            }
            valor_fila = cantidad_model * vvv;
            model.setValueAt(valor_fila, i, 4);
            subtotal = valor_fila + subtotal;

        }
        if (invalido) {
            JOptionPane.showMessageDialog(this, "Formato de datos erróneo", "Error", JOptionPane.ERROR_MESSAGE);
        }
        float total = 0;
        lblSubtotal.setText("" + subtotal);
        float igv = Float.parseFloat(String.valueOf(subtotal * (Float.parseFloat(this.cmbIGV.getSelectedItem().toString())/100)));
        total = igv + subtotal;
        igv = Float.parseFloat("" + redondear(igv, 2));
        lblIGV.setText("" + igv);
        total = Float.parseFloat("" + redondear(total, 2));
        lblTotal.setText("" + total);

    }

    public void deshabilitar_codigo(boolean deshabilitado) {
        this.numero.setEditable(!deshabilitado);
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAgregar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnguardar;
    private javax.swing.JComboBox cmbIGV;
    private javax.swing.JComboBox cmbproveedor;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JLabel lblIGV;
    private javax.swing.JLabel lblSubtotal;
    private javax.swing.JLabel lblTotal;
    private javax.swing.JTextField numero;
    private javax.swing.JTable tablafaccom;
    private javax.swing.JTextField txtfecha;
    // End of variables declaration//GEN-END:variables

    /**
     * @return the codigo
     */
    public String getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(String codigo) {
        this.codigo = codigo;
        numero.setText(codigo);
    }

    /**
     * @return the fecha
     */
    public String getFecha() {
        return fecha;
    }

    /**
     * @param fecha the fecha to set
     */
    public void setFecha(String fecha) {
        this.fecha = fecha;
        this.txtfecha.setText(fecha);
    }

    /**
     * @return the proveedor
     */
    public String getProveedor() {
        return proveedor;
    }

    /**
     * @param proveedor the proveedor to set
     */
    public void setProveedor(String proveedor) {
        this.proveedor = proveedor;
        this.cmbproveedor.setSelectedItem(proveedor);

    }

    /**
     * @return the modelconsulta
     */
    public MiModeloCompraBoleta getModelconsulta() {
        return model;
    }

    /**
     * @param modelconsulta the modelconsulta to set
     */
    public void setModelconsulta(MiModeloCompraBoleta modelconsulta) {//solo utilizado en modificar comprobante
        this.model = modelconsulta;

        tablafaccom.setModel(this.model);
        
        //this.detalleProducto.en_modificar_compra_cargar_data_inicial(this.model);
    }

    /**
     * @return the igv
     */
    public float getIgv() {
        return igv;
    }

    /**
     * @param igv the igv to set
     */
    public void setIgv(float igv) {
        this.igv = igv;
        this.igv = Float.parseFloat("" + redondear(this.igv, 2));
        lblIGV.setText("" + this.igv);
    }

    /**
     * @return the total
     */
    public float getTotal() {
        return total;
    }

    /**
     * @param total the total to set
     */
    public void setTotal(float total) {
        this.total = total;
        this.total = Float.parseFloat("" + redondear(this.total, 2));
        this.lblTotal.setText("" + this.total);

    }

    public void setModelpreliminar(DefaultTableModel modelpreliminar) {

        this.model_preliminar = modelpreliminar;
    }

    public void habilitarBoton(boolean habilitar) {

        btnguardar.setEnabled(habilitar);
        if (bandera == 1) {
            numero.requestFocus();
        }

    }

    public boolean escrito_campo_numero_comprobante() {
        boolean escrito = false;
        if (!numero.getText().equals("")) {
            escrito = true;
        }
        return escrito;
    }
}
